﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dominio;
using Servicios;

namespace EstadisticaProduce.Acuicultura
{
    public partial class frmRegistroPersonalOcupado : ObjectPage //System.Web.UI.Page
    {

        #region Variables
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        #endregion

        #region Métodos
        private void cargaTipoContrato()
        {
            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaTipoContrato();
            ddlTipoContrato.DataSource = lst;
            ddlTipoContrato.DataTextField = "des_tipocontrato";
            ddlTipoContrato.DataValueField = "cod_tipocontrato";
            ddlTipoContrato.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlTipoContrato, "0", "- Seleccione", 0);
        }
        private void cargaTipoTrabajador()
        {
            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ListaTipoTrabajador();
            ddlTipoTrabajador.DataSource = lst;
            ddlTipoTrabajador.DataTextField = "des_tipotrabajador";
            ddlTipoTrabajador.DataValueField = "cod_tipotrabajador";
            ddlTipoTrabajador.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlTipoTrabajador, "0", "- Seleccione", 0);
        }
        private void limpiaFormulario(Int16 type)
        {
            if (type == 0)
            {
                hdnaccion.Value = string.Empty;
                hdncodregistro.Value = "0";

                txtCtDiscapH.Text = "0.00";
                txtCtDiscapM.Text = "0.00";
                txtCtMOtros.Text = "0.00";
                txtCtProdH.Text = "0.00";
                txtCtProdM.Text = "0.00";
                txtCtHOtros.Text = "0.00";

                Utilidades.DropDownListSelectValue(ref ddlTipoContrato, "0");
                Utilidades.DropDownListSelectValue(ref ddlTipoTrabajador, "0");
            }
            else 
            {
                txtNroDias.Text = "0.00";
                txtPorcentaje.Text = "0.00";
            }
        }
        private void GrabarRegistroProduccion()
        {
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESA = hdncodempresa.Value;
            decimal COD_PERSONALOCUPADO = Convert.ToDecimal(hdncodregistro.Value);
            decimal COD_TIPOCONTRATO = Convert.ToDecimal(ddlTipoContrato.SelectedValue);
            decimal COD_TIPOTRABAJADOR = Convert.ToDecimal(ddlTipoTrabajador.SelectedValue);
            decimal CAN_PRODUCCION_HOMBRE = Convert.ToDecimal(txtCtProdH.Text);
            decimal CAN_PRODUCCION_MUJER = Convert.ToDecimal(txtCtProdM.Text);
            decimal CAN_OTRO_HOMBRE = Convert.ToDecimal(txtCtHOtros.Text);
            decimal CAN_OTRO_MUJER = Convert.ToDecimal(txtCtMOtros.Text);
            decimal CAN_DISCAP_HOMBRE = Convert.ToDecimal(txtCtDiscapH.Text);
            decimal CAN_DISCAP_MUJER = Convert.ToDecimal(txtCtDiscapM.Text);
            string USE_REG = UsuarioSistema.cod_Usuario;//"U09717";
            string USE_MOD = USE_REG;// "U09717";
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_PERSONALOCUPADO", COD_PERSONALOCUPADO);
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_TIPOCONTRATO", COD_TIPOCONTRATO);
                ht.Add("COD_TIPOTRABAJADOR", COD_TIPOTRABAJADOR);
                ht.Add("CAN_PRODUCCION_HOMBRE", CAN_PRODUCCION_HOMBRE);
                ht.Add("CAN_PRODUCCION_MUJER", CAN_PRODUCCION_MUJER);
                ht.Add("CAN_OTRO_HOMBRE", CAN_OTRO_HOMBRE);
                ht.Add("CAN_OTRO_MUJER", CAN_OTRO_MUJER);
                ht.Add("CAN_DISCAP_HOMBRE", CAN_DISCAP_HOMBRE);
                ht.Add("CAN_DISCAP_MUJER", CAN_DISCAP_MUJER);
                ht.Add("USE_REG", USE_REG);
                ht.Add("USE_MOD", USE_MOD);

                if (hdncodregistro.Value != "0" && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaRegistroPersonalOcupado(ht);
                }
                else
                {
                    iresultado = _consultas.InsertaRegistroPersonalOcupado(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario(0);
                    cargaGrilla();
                }
            }
        }
        private void GrabarResumen()
        {
            Int32 iresultado = 0;
           // string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESA = hdncodempresa.Value;
            decimal NRO_DIAS = Convert.ToDecimal(txtNroDias.Text);
            decimal PORCENTAJE = Convert.ToDecimal(txtPorcentaje.Text);

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("NRO_DIAS", NRO_DIAS);
                ht.Add("PORCENTAJE", PORCENTAJE);


                iresultado = _consultas.InsertaPersonalOcupadoResumen(ht);
           
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario(1);
                    //cargaGrilla();
                }
            }
        }
        private void cargaFormulario(domConsultasGenerales _be)
        {
            /*
            cod_personalocupado,codperiodo,codempresa,nombrecomercial,
             * cod_tipocontrato,des_tipocontrato,cod_tipotrabajador,des_tipotrabajador,can_produccion_hombre,can_produccion_mujer,
             * can_otro_hombre,can_otro_mujer,can_discap_hombre,can_discap_mujer     
            */
            txtCtDiscapH.Text = _be.can_discap_hombre.ToString();
            txtCtDiscapM.Text = _be.can_discap_mujer.ToString();
            txtCtHOtros.Text = _be.can_otro_hombre.ToString();
            txtCtMOtros.Text = _be.can_otro_mujer.ToString();
            txtCtProdH.Text = _be.can_produccion_hombre.ToString();
            txtCtProdM.Text = _be.can_produccion_mujer.ToString();

            Utilidades.DropDownListSelectValue(ref ddlTipoContrato, _be.cod_tipocontrato.ToString());
            Utilidades.DropDownListSelectValue(ref ddlTipoTrabajador, _be.cod_tipotrabajador.ToString());

            hdnaccion.Value = "EDITAR";
            hdncodregistro.Value = _be.cod_personalocupado.ToString();


        }
        private void eliminaRegistro(domConsultasGenerales _be)
        {
            decimal COD_PERSONALOCUPADO = _be.cod_personalocupado;
            Int32 iresultado = 0;
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_PERSONALOCUPADO", COD_PERSONALOCUPADO);

                iresultado = _consultas.EliminaRegistroPersonalOcupado(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario(0);
                    cargaGrilla();
                }
            }
        }
        private void muestraPnlMensaje(string _smens, Int32 _iopcion)
        {
            if (_iopcion == 1)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = _smens;
            }
            else
            {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;
            }
        }
        private void cargaGrilla()
        {
            try
            {
                decimal COD_PERSONALOCUPADO = -1;
                string COD_EMPRESA = hdncodempresa.Value;
                string COD_PERIODO = hdnperiodo.Value;
                Hashtable ht = new Hashtable();
                ht.Add("COD_PERSONALOCUPADO", COD_PERSONALOCUPADO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_PERIODO", COD_PERIODO);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaRegistroPersonalOcupado(ht);

                gvRegistro.DataSource = lst;
                gvRegistro.DataBind();
            }
            catch (Exception ex)
            {
                err_mens = "Error al cargar grilla:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally
            {
                muestraPnlMensaje(string.Empty, -1);
            }
        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdnperiodo.Value = UsuarioSistema.cod_Periodo;//"201203";
                hdncodestablecimiento.Value = "1";
                hdncodempresa.Value = UsuarioSistema.cod_Empresa;//"00001";
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;
                cargaTipoContrato();
                cargaTipoTrabajador();
                cargaGrilla();
            }
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                     cod_personalocupado,codperiodo,codempresa,nombrecomercial,
                      * cod_tipocontrato,des_tipocontrato,cod_tipotrabajador,des_tipotrabajador,can_produccion_hombre,can_produccion_mujer,
                      * can_otro_hombre,can_otro_mujer,can_discap_hombre,can_discap_mujer     
                     */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_personalocupado = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_personalocupado"]);
                        be.codperiodo = gvRegistro.DataKeys[Index].Values["codperiodo"].ToString();
                        be.codempresa = gvRegistro.DataKeys[Index].Values["codempresa"].ToString();
                        be.cod_tipocontrato = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_tipocontrato"]);
                        be.cod_tipotrabajador = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_tipotrabajador"]);
                        be.can_produccion_hombre = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_produccion_hombre"]);
                        be.can_produccion_mujer = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_produccion_mujer"]);
                        be.can_otro_hombre = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_otro_hombre"]);
                        be.can_otro_mujer = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_otro_mujer"]);
                        be.can_discap_hombre = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_discap_hombre"]);
                        be.can_discap_mujer = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["can_discap_mujer"]);

                        limpiaFormulario(0);
                        cargaFormulario(be);
                    }
                    else
                    {
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_personalocupado = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_personalocupado"]);

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
            }
        }

        private bool validarResumen() 
        {
            bool resultado = true;
            string COD_EMPRESA = hdncodempresa.Value;
            string COD_PERIODO = hdnperiodo.Value;
            Hashtable ht = new Hashtable();
            ht.Add("COD_EMPRESA", COD_EMPRESA);
            ht.Add("COD_PERIODO", COD_PERIODO);

            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
            lst = _consultas.ValidaPersonalOcupadoResumen(ht);

            if (lst.Count > 0) 
            {
                if (lst[0].contador > 0)
                {
                    return false;
                }
                else { return true; }
            }
            return true;
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try 
            {
                GrabarRegistroProduccion();
            }
            catch (Exception ex) { }
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario(0);
        }

        protected void btnLimpiarResumen_Click(object sender, EventArgs e)
        {
            limpiaFormulario(1);
        }

        protected void btnGrabarResumen_Click(object sender, EventArgs e)
        {
            try 
            {
                if (validarResumen())
                {
                    GrabarResumen();
                }
                else 
                {
                    err_mens = string.Format("{0} {1}", "Ya existe un resumen para este periodo", hdnperiodo.Value);
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
            }
            catch (Exception ex) { }
        }
    }
}